//: [Previous](@previous)

let name:String = "Jack Ma"
var age:Int = 18

extension Int {
   //获得该整数的字符串
  var toString : String{
      return String(self)
   }
	func add(_ num:Int)->Int{
		return self + num
	}
}

print(100.toString)
print(100.add(100))


class Bucket {
	var color:String="black"
}
var bucket = Bucket()
var azurePaint = bucket
azurePaint.color = "blue"

//以下输出都变为：blue
print(bucket.color)
print(azurePaint.color)

struct Color {
	var name:String = "black"
}

var color = Color()
var anthorColor = color
anthorColor.name = "blue"

print(color.name) // black
print(anthorColor.name) //blue

// 整型
// 有符号整形 Int,Int8,Int16,Int32,Int16
// 无符号整形: UInt,UInt8,UInt16,UInt32,UInt16
// 一般使用Int类型即可
// 在32位平台上， Int 的长度和 Int32 相同。
// 在64位平台上， Int 的长度和 Int64 相同。
var intNum = 100


// 浮点数
// 浮点数是有小数的数字，比如 3.14159 , 0.1 , 和 -273.15 。
//Double代表 64 位的浮点数。
//Float 代表 32 位的浮点数。
var dnum: Double = 12.5
var fnum: Float = 12.5


// 字符串类型，Swift 类型推断为String类型
let someString = "Some string literal value"
// 显示指定String类型
let anotherString:String = "Another string literal value"



// 多行字符串
let quotation = """
The White Rabbit put on his spectacles.  "Where shall I begin,
please your Majesty?" he asked.
"""
print(quotation)

// 字符串插值,可以通过 \()的形式进行字符串插值，\() 中可以进行表达式运算
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
print(message)
//输出： 3 times 2.5 is 7.5


//布尔值Bool
//Swift为布尔量 Bool 提供了两个常量值， true 和 false 。
let orangesAreOrange:Bool = true
let turnipsAreDelicious:Bool = false

if turnipsAreDelicious {
    print("Mmm, tasty turnips!")
} else {
    print("Eww, turnips are horrible.")
}
// 输出：Eww, turnips are horrible.

//和JavaScript语言不同，Swift 的类型安全机制会阻止你用一个非布尔量的值替换掉 Bool。
/*
let i = 1
//编译期即会报错
if i {
   
}
*/


// 元组Tuple 
//元组把多个值合并成单一的复合型的值。元组内的值可以是任何类型，而且可以不必是同一类型。
let http404Error = (404, "Not Found")
print("the status code is \(http404Error.0)") //the status code is 404
print("the reason is \(http404Error.1)")  //the reason is Not Found
let (statusCode, statusMessage) = http404Error
print("ths status code is \(statusCode)")  //ths status code is 404

let http200Status = (statusCode: 200, description:"OK")
print("The status code is \(http200Status.statusCode)")  //The status code is 200


// 枚举 enum
// 可以用 enum关键字来定义一个枚举，然后将其所有的定义内容放在一个大括号（ {}）中：
//Swift 中的枚举更加灵活，并且不需给枚举中的每一个成员都提供值。
//如果一个值（所谓“原始”值）要被提供给每一个枚举成员，那么这个值可以是字符串、字符、任意的整数值，或者是浮点类型。
enum CompassPoint {
	case north
	case south
	case east
	case west
}
var point = CompassPoint.east
//当point 被赋值为CompassPoint.east,其类型可以被推断为：  CompassPoint
print(type(of: point))
//当point 的类型被推断为 CompassPoint 后，就可以使用一个缩写语法（.）将其设置为另一个CompassPoint的值：
point = .east
switch point
{
case .north:
	print("point is north")
case .south:
	print("point is south")
case .east:
	print("point is east")
case .west:
	print("point is west")
}
// 输出：point is east



//: [Next](@next)
